from QQLoginTool.QQtool import OAuthQQ
from django.http import JsonResponse
from django.shortcuts import render
from django.views import View

from MeiDuoShop import settings

"""
第三方登录的步骤：
1. QQ互联注册开发者（略）
2. QQ互联创建应用（略）
3. 按照文档开发（看文档的）
3.1 准备工作
    # QQ登录参数，申请的客户端ID：appid
    QQ_CLIENT_ID = '101474184'          
    # QQ登录参数，申请的客户端秘钥：appkey
    QQ_CLIENT_SECRET = 'c6ce949e04e12ecc909ae6a8b09b637c'
    # 申请时添加的: 登录成功后回调的路径
    QQ_REDIRECT_URI = 'http://www.meiduo.site:8080/oauth_callback.html'
3.2 放置QQ登录的图标（目的： 让我们点击QQ图标来实现第三方登录）---> 前端做
3.3 根据oauth2.0 来获取code 和 token ---> 我们要做的
    对于网站应用而言，需要进行两步：
    1. 获取Authorization Code：表面是一个链接，实质是需要用户同意，然后获取code
    2. 通过Authorization Code获取Access Token
3.4 通过token换取openid ---> 我们要做的
    openid是此网站上唯一对应用户身份的标识，网站可将此ID进行存储便于用户下次登录时辨识其身份，
    或将其与用户在网站上的原有账号进行绑定。

把openid 和 用户信息 进行一一对应的绑定

生成用户绑定链接 ---> 获取code ---> 获取token ---> 获取openid ---> 保存openid
"""
"""
生成用户绑定链接:
前端：当用户点击QQ登录图标的时候，前端发送axios请求
后端：
    请求：
    业务逻辑：调用QQLoginTool生成跳转链接；pip install QQLoginTool
    响应：返回跳转链接，如 {"code":0, "errmsg":"ok", "login_url":"http://xxx"}
    
    路由：get qq/authorization/
"""
class QQLoginURLView(View):

    def get(self,request):
        # 1. 生成 QQLoginTool 实例对象
        # client_id=None,               appid
        # client_secret=None,           appsecret
        # redirect_uri=None,            用户同意登录之后，跳转的页面
        # state=None                    暂时不知道是什么，先随便写。等出了问题再分析问题
        qq=OAuthQQ(client_id=settings.QQ_CLIENT_ID,
                   client_secret=settings.QQ_CLIENT_SECRET,
                   redirect_uri=settings.QQ_REDIRECT_URI,
                   state='asdfghjkl')

        # 2. 调用对象的方法生成跳转链接
        qq_login_url = qq.get_qq_url()

        # 3. 返回响应
        return JsonResponse({"code":0, "errmsg":"ok", "login_url":qq_login_url})


